<?php
/***************************************************************
*  Copyright notice
*
*  (c) 2011 Florian Müller <it-admin@ifp-potsdam.co>, IFP
*  
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 3 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

/**
 * Anmeldung
 */
class Tx_IfpCurriculum2_Domain_Model_Anmeldung extends Tx_Extbase_DomainObject_AbstractEntity {

	/**
	 * Anmeldezeitpunkt
	 *
	 * @var DateTime
	 * 
	 */
	protected $anmeldezeitpunkt;

	/**
	 * Bezahlt
	 *
	 * @var boolean
	 */
	protected $bezahlt;

	/**
	 * Kommentar
	 *
	 * @var string
	 */
	protected $kommentar;

	/**
	 * Stornierung
	 *
	 * @var DateTime
	 */
	protected $stornierungszeitpunkt;

	/**
	 * Teilnehmer
	 *
	 * @var Tx_IfpCurriculum2_Domain_Model_Teilnehmer
	 */
	protected $teilnehmer;
	/**
	 * bveranstaltung
	 *
	 * @var Tx_IfpCurriculum2_Domain_Model_Veranstaltung
	 */
	protected $veranstaltung;

	/**
	 * @var Tx_Extbase_Persistence_ObjectStorage<Tx_IfpCurriculum2_Domain_Model_Teilnahmebestaetigung>
	 */
	protected $teilnehmerbestaetigungen;
	/**
	 * 
	 * teilgenomme UE
	 * @var integer
	 */
	protected $absolvierteue;
	/**
	 * @return DateTime
	 */
	public function getAnmeldezeitpunkt() {
		return $this->anmeldezeitpunkt;
	}

	/**
	 * @param boolean $bezahlt
	 * @return void
	 */
	public function setBezahlt($bezahlt) {
		$this->bezahlt = $bezahlt;
	}

	/**
	 * @return boolean
	 */
	public function getBezahlt() {
		return $this->bezahlt;
	}

	/**
	 * @return boolean
	 */
	public function isBezahlt() {
		return $this->getBezahlt();
	}

	/**
	 * @param string $kommentar
	 * @return void
	 */
	public function setKommentar($kommentar) {
		$this->kommentar = $kommentar;
	}

	/**
	 * @return string
	 */
	public function getKommentar() {
		return $this->kommentar;
	}

	/**
	 * @param DateTime $stornierungszeitpunkt
	 * @return void
	 */
	public function setStornierungszeitpunkt(DateTime $stornierungszeitpunkt) {
		$this->stornierungszeitpunkt = $stornierungszeitpunkt;
	}

	/**
	 * @return DateTime
	 */
	public function getStornierungszeitpunkt() {
		return $this->stornierungszeitpunkt;
	}

	/**
	 * @param Tx_IfpCurriculum2_Domain_Model_Teilnehmer $teilnehmer
	 * @return void
	 */
	public function setTeilnehmer(Tx_IfpCurriculum2_Domain_Model_Teilnehmer $teilnehmer) {
		$this->teilnehmer = $teilnehmer;
	}

	/**
	 * @return Tx_IfpCurriculum2_Domain_Model_Teilnehmer
	 */
	public function getTeilnehmer() {
		return $this->teilnehmer;
	}
/**
	 * @param Tx_IfpCurriculum2_Domain_Model_Veranstaltung $veranstaltung
	 * @return void
	 */
	public function setVeranstaltung(Tx_IfpCurriculum2_Domain_Model_Veranstaltung $veranstaltung) {
		$this->veranstaltung = $veranstaltung;
	}
/**
	 * @return integer
	 */
	public function getAbsolvierteue() {
		return $this->absolvierteue;
	}
/**
	 * @param integer $absolvierteue
	 * @return void
	 */
	public function setAbsolvierteue( $absolvierteue) {
		$this->absolvierteue = $absolvierteue;
	}

	/**
	 * @return Tx_IfpCurriculum2_Domain_Model_Veranstaltung
	 */
	public function getVeranstaltung() {
		return $this->veranstaltung;
	}
	public function setDefault(){
		$this->anmeldezeitpunkt=new DateTime();
		$this->setBezahlt(false);
		
	}
	
	public function getStatus(){
			
		if($this->isStorniert()){
			return "Storniert";
		}
		
		$diff=$this->differenceInDays($this->veranstaltung->getErstbeginn(),new DateTime("now"));
		if($diff>=0){
			return "geplant";
		}
		if($this->absolvierteue>0){
			return "Teilgenommen (".$this->getAbsolvierteue()."/".$this->getVeranstaltung()->getUe().")";
		}elseif ($this->absolvierteue==0){
			return "Nicht Teilgenommen";
		}
		
		
	}
	public function getStatusCode(){
			
		if($this->isStorniert()){
			return -1;
		}
		
		$diff=$this->differenceInDays($this->veranstaltung->getErstbeginn(),new DateTime("now"));
		if($diff>=0){
			return 0;
		}
		if($this->absolvierteue>0){
			return 1;
		}elseif ($this->absolvierteue==0){
			return -1;
		}
		
		
	}
	
	public function getIsStornoMoeglich(){
		return $this->veranstaltung->isAnmeldungMoeglich();
	}
	protected  function differenceInDays ($firstDate, $secondDate){
    $firstDateTimeStamp = $firstDate->format("U");
    $secondDateTimeStamp = $secondDate->format("U");
    $rv = round ((($firstDateTimeStamp - $secondDateTimeStamp))/86400);
    return $rv;
}
	public function isAnmeldungMoeglich(){
		return $this->getIsStornoMoeglich();
	}
	
	public function isStorniert(){
	if(isset($this->stornierungszeitpunkt)){
			return "true";
		}
		return false;
	}
	/**
	 * 
	 * Enter description here ...
	 * @return Tx_Extbase_Persistence_ObjectStorage<Tx_IfpCurriculum2_Domain_Model_Teilnahmebestaetigung>
	 */
	public function getTeilnehmerbestaetigungen(){
		return $this->teilnehmerbestaetigungen;
	}
	/**
	 * 
	 * Enter description here ...
	 * @param Tx_Extbase_Persistence_ObjectStorage<Tx_IfpCurriculum2_Domain_Model_Teilnahmebestaetigung> $teilnehmerbestaetigungen
	 */
	public function setTeilnehmerbestaetigungen(Tx_Extbase_Persistence_ObjectStorage $teilnehmerbestaetigungen){
		$this->teilnehmerbestaetigungen=$teilnehmerbestaetigungen;
	}
	/**
	 * 
	 * Enter description here ...
	 * @param Tx_IfpCurriculum2_Domain_Model_Teilnahmebestaetigung $teilnehmerbestaetigung
	 */
	public function addTeilnehmerbestaetigungen(Tx_IfpCurriculum2_Domain_Model_Teilnahmebestaetigung $teilnehmerbestaetigung){
		$this->teilnehmerbestaetigungen->attach($teilnehmerbestaetigung);
	}
	

}
?>